# -*-coding:utf-8-*-
"""
@project: python-project
@Time: 2024-07-25 10:36
@Author: Loneliness_Burial
@File: numpy高维数组变为向量.py
@Motto: 深情不改必坠死海
@software: pycharm
@version: python 3.7
"""

import numpy as np

arr = np.random.randint(1, 10, (2, 3))
print("创建的数组为：\n", arr)
arr1 = arr.flatten()
print("将创建的数组展平为：\n", arr1)
arr2 = arr.ravel()
print("将创建的数组展平为：\n", arr2)
arr.flatten()[0] = 10
arr3 = arr.flatten()
print("将数组展平为第0位为10：\n", arr3)
arr.ravel()[0] = 10
arr4 = arr.ravel()
print("将数组展平为第0位为10：\n", arr4)
# flatten()和ravel()方法的区别在于，当展平后的数组形状与原数组形状相同时，
# 使用flatten()方法会重新创建一个数组，而使用ravel()方法不会重新创建数组，
# 它只是返回原数组的视图，所以修改展平后的数组也会修改原数组。
arr5 = np.random.randint(1, 10, (2, 3, 4))
print("创建一个三维数组：\n", arr5)
arr6 = arr5.flatten()
print("展平后的数组：\n", arr6)
arr7 = arr5.ravel()
print("展平后的数组：\n", arr7)
arr5.ravel()[4] = 10
arr6 = arr5.ravel()
print("\n", arr6)
